home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / hash_table.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-04-14  |  945 b   |  41 lines

  1.  
  2. /* Copyright (C) 1988, 1989 Herve' Touati, Aquarius Project, UC Berkeley */
  3.  
  4. /* Copyright Herve' Touati, Aquarius Project, UC Berkeley */
  5.  
  6. struct HashTableEntry {
  7.   int key;
  8.   int value;
  9.   HashTableEntry* next;
  10.   void print() {printf("(%d,%d)\n", key, value);}
  11. };
  12.  
  13. enum {HASH_HIT, HASH_MISS};
  14.  
  15. class HashTable {
  16.   HashTableEntry* next_entry;
  17.   HashTableEntry* next_entry0;
  18.   HashTableEntry** next_cell;
  19.   int next_index;
  20.   void reenter_old_data(int, HashTableEntry**);
  21.   HashTableEntry** get_cell(int);
  22.  public:
  23.   char* alloc_area;
  24.   void allocate();
  25.   void rehash();
  26.   HashTableEntry** table;
  27.   int size;
  28.   int status;
  29.   int get_status() {return status;}
  30.   HashTable(int size =1001);
  31.   HashTableEntry* new_cell() {
  32.     return (next_entry >= next_entry0) ? 0 : next_entry++;
  33.   }
  34.   void bind(int, int);
  35.   int get(int);
  36.   void clear();
  37.   void reset();            /* should be called before any next */
  38.   HashTableEntry* next();
  39.   virtual void print();
  40. };
  41.